962A - Equator - CodeForces Solution


implementation *1300

Please click on ads to support us..

Python Code:

n=int(input())
a=list(map(int,input().split()))
b=sum(a)
cnt=0
for i in range(n):
    cnt+=a[i]
    if(cnt>=b/2):
        print(i+1)
        break

C++ Code:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define ull unsigned long long
#define pb push_back
#define pob pop_back
#define mp make_pair
#define f(n) for (int i = 0; i < n; i++)
#define PI 3.1415926536
#define MOD 1073741824
const ll INF = 1e9 + 7;

int fact(ll n)
{
    return (n == 1 || n == 0) ? 1 : n * fact(n - 1);
}
int countDivisors(ll n)
{
    int cnt = 0;
    for (ll i = 1; i <= sqrt(n); i++)
    {
        if (n % i == 0)
        {
            // If divisors are equal,
            // count only one
            if (n / i == i)
                cnt++;

            else // Otherwise count both
                cnt = cnt + 2;
        }
    }
    return cnt;
}
// Palindrome Check
int isPalindrome(string s)
{
    // Start from leftmost and rightmost corners of str
    int l = 0;
    int h = s.length() - 1;

    // Keep comparing characters while they are same
    while (h > l)
    {
        if (s[l++] != s[h--])
        {
            return 0;
        }
    }
    return 1;
}
ll gcd(ll a, ll b)
{
    if (b == 0)
        return a;
    return gcd(b, a % b);
}
bool Primecheck(ll n)
{
    if (n == 1)
        return false;
    for (int i = 2; i * i <= n; i++)
    {
        if (n % i == 0)
        {
            return false;
        }
    }
    return true;
}
vector<ll> primes;
vector<ll> findPrimes()
{
    for (int i = 2; i < 1e6; i++)
    {
        if (Primecheck(i))
            primes.pb(i);
    }
}
bool comp(pair<ll, ll> &a, pair<ll, ll> &b)
{
    if (a.first != b.first)
    {
        return (a.first < b.first);
    }
    else
    {
        return (a.second > b.second);
    }
}
int highestPowerof2(int n)
{
    int res = 0;
    for (int i = n; i >= 1; i--)
    {
        // If i is a power of 2
        if ((i & (i - 1)) == 0)
        {
            res = i;
            break;
        }
    }
    return res;
}

ll bs_sqrt(ll x)
{
    ll left = 0, right = 2000000123;
    while (right > left)
    {
        ll mid = (left + right) / 2;

        if (mid * mid > x)
            right = mid;
        else
            left = mid + 1;
    }
    return left - 1;
}
void subString(char str[], int n)
{
    // Pick starting point
    for (int len = 1; len <= n; len++)
    {
        // Pick ending point
        for (int i = 0; i <= n - len; i++)
        {
            //  Print characters from current
            // starting point to current ending
            // point.
            int j = i + len - 1;
            for (int k = i; k <= j; k++)
                cout << str[k];

            cout << endl;
        }
    }
}

int countUnsetBits(ll n)
{
    ll x = n;

    // Make all bits set MSB
    // (including MSB)

    // This makes sure two bits
    // (From MSB and including MSB)
    // are set
    n |= n >> 1;

    // This makes sure 4 bits
    // (From MSB and including MSB)
    // are set
    n |= n >> 2;

    n |= n >> 4;
    n |= n >> 8;
    n |= n >> 16;

    // Count set bits in toggled number
    return __builtin_popcountll(x ^ n);
}
long long binpow(long long a, long long b, long long m)
{
    if (b == 0)
        return 1;
    long long res = binpow(a, b / 2, m);
    if (b % 2)
        return ((res * res) % m * a) % m;
    else
        return (res * res) % m;
}
vector<int> decToBinary(int n)
{
    vector<int> binum;
    // Size of an integer is assumed to be 32 bits
    for (int i = 32; i >= 0; i--)
    {
        int k = n >> i;
        if (k & 1)
            binum.pb(1);
        else
            binum.pb(0);
    }
    return binum;
}
ll binaryToDecimal(int ans[])
{

    int dec_value = 0;

    // Initializing base value to 1, i.e 2^0
    int base = 1;

    int len = 32;
    for (int i = len - 1; i >= 0; i--)
    {
        if (ans[i] == 1)
            dec_value += base;
        base = base * 2;
    }

    return dec_value;
}
bool isPerfectSquare(long double x)
{
    // Find floating point value of
    // square root of x.
    if (x >= 0)
    {

        long long sr = sqrt(x);

        // if product of square root
        // is equal, then
        // return T/F
        return (sr * sr == x);
    }
    // else return false if n<0
    return false;
}
map<ll, ll> mmm;
void primeFactors(int n)
{
    // Print the number of 2s that divide n
    while (n % 2 == 0)
    {
        mmm[2]++;
        n = n / 2;
    }

    // n must be odd at this point. So we can skip
    // one element (Note i = i +2)
    for (int i = 3; i <= sqrt(n); i = i + 2)
    {
        // While i divides n, print i and divide n
        while (n % i == 0)
        {
            mmm[i]++;
            n = n / i;
        }
    }

    // This condition is to handle the case when n
    // is a prime number greater than 2
    if (n > 2)
        mmm[n]++;
}

ll getSum(ll n)
{
    int sum = 0;
    while (n != 0)
    {
        sum = sum + n % 10;
        n = n / 10;
    }
    return sum;
}
vector<char> vi;
string LCSubStr(string X, string Y)
{
    // Find length of both the strings.
    int m = X.length();
    int n = Y.length();
 
    // Variable to store length of longest
    // common substring.
    int result = 0;
 
    // Variable to store ending point of
    // longest common substring in X.
    int end;
 
    // Matrix to store result of two
    // consecutive rows at a time.
    int len[2][n + 1];
 
    // Variable to represent which row of
    // matrix is current row.
    int currRow = 0;
 
    // For a particular value of i and j,
    // len[currRow][j] stores length of longest
    // common substring in string X[0..i] and Y[0..j].
    for (int i = 0; i <= m; i++) {
        for (int j = 0; j <= n; j++) {
            if (i == 0 || j == 0) {
                len[currRow][j] = 0;
            }
            else if (X[i - 1] == Y[j - 1]) {
                len[currRow][j] = len[1 - currRow][j - 1] + 1;
                if (len[currRow][j] > result) {
                    result = len[currRow][j];
                    end = i - 1;
                }
            }
            else {
                len[currRow][j] = 0;
            }
        }
 
        // Make current row as previous row and
        // previous row as new current row.
        currRow = 1 - currRow;
    }
 
    // If there is no common substring, print -1.
    if (result == 0) {
        return "";
    }
    return X.substr(end - result + 1, result);
}
void solve()
{  
    ll n;cin>>n;
    ll a[n],sum=0,temp=0;
    f(n){
        cin>>a[i];
        sum+=a[i];
    }
    if(sum%2==0)sum/=2;
    else sum=(sum+1)/2;
    f(n){
        temp+=a[i];
        if(temp>=sum){
            cout<<i+1<<endl;
            return;
        }
    }

   
    }
    



int main()

{
    ll t;
    //cin>>t;
    t=1;
    while(t--){
        solve();}

     
}


Comments

Submit
0 Comments
More Questions

1547C - Pair Programming
550A - Two Substrings
797B - Odd sum
1093A - Dice Rolling
1360B - Honest Coach
1399C - Boats Competition
1609C - Complex Market Analysis
1657E - Star MST
1143B - Nirvana
1285A - Mezo Playing Zoma
919B - Perfect Number
894A - QAQ
1551A - Polycarp and Coins
313A - Ilya and Bank Account
1469A - Regular Bracket Sequence
919C - Seat Arrangements
1634A - Reverse and Concatenate
1619C - Wrong Addition
1437A - Marketing Scheme
1473B - String LCM
1374A - Required Remainder
1265E - Beautiful Mirrors
1296A - Array with Odd Sum
1385A - Three Pairwise Maximums
911A - Nearest Minimums
102B - Sum of Digits
707A - Brain's Photos
1331B - Limericks
305B - Continued Fractions
1165B - Polycarp Training